package geometria;

import util.Mat;

public class Disco extends Punto implements FiguraPiana {

	private double raggio;

	public Disco(double raggio) {
		if (raggio <= 0)
			throw new IllegalArgumentException();
		this.raggio = raggio;
	}

	public Disco(Punto p1, Punto p2) {
		if (Mat.sufficientementeProssimi(p1.getX(), p2.getX())
				&& Mat.sufficientementeProssimi(p1.getY(), p2.getY()))
			throw new IllegalArgumentException();

		raggio = (p1.distanza(p2)) / 2;
	}

	public Disco(Punto p) {
		Punto p0 = new Punto(0, 0);
		if (Mat.sufficientementeProssimi(p.getX(), 0)
				&& Mat.sufficientementeProssimi(p.getY(), 0))
			throw new IllegalArgumentException();

		raggio = (p.distanza(p0)) / 2;
	}

	// costruttori
	public double getRaggio() {
		return raggio;

	}

	public double area() {
		return Math.PI * raggio * raggio;

	}

	public double perimetro() {
		return 2 * Math.PI * raggio;

	}

	public String toString() {
		return "Raggio:" + String.format("%1.2f", raggio) + " Perimetro:"
				+ String.format("%1.2f", perimetro()) + " Area :"
				+ String.format("%1.2f", area());
	}

	public static void main(String[] args) {

		Punto p1 = new Punto(10, 5);
		Punto p2 = new Punto(20, 50);
		Disco d1 = new Disco(p1, p2);
		Disco d2 = new Disco(p1);
		Disco d3 = new Disco(p2);

		System.out.println(d1);
		System.out.println(d2);
		System.out.println(d3);

	}
}
